An application written in native code (e.g., C, C++) can be compiled directly into machine code and executed by a processor (e.g., an x86-class processor available from Intel Corporation of Santa Clara, Calif.). By contrast, executing an application written in non-native or managed code (e.g., C#, Java, Ruby, Python) can require a virtual environment (e.g., NET Runtime, Java Virtual Machine (JavaVM)) to provide a software emulation of a particular processor. Thus, an operation system may be required to load a particular runtime environment prior to loading a corresponding non-native code application.
For example, a runtime loader (e.g., NET runtime loader) can be invoked to load the runtime environment (Common Language Runtime (CLR), Mono Runtime) for non-native (e.g., .NET) applications. The runtime loader can define and publish a native programming interface (e.g., C# Hosting Interfaces in Windows, Java Native Interface for Java applications, and Mono Embedding API for Mono Runtime.), which can be used by native code to load a corresponding runtime environment. The runtime loader can be written in native programming language (e.g., C, C++) and compiled as a dynamic linked library that can be loaded directly by an operation system.